package com.frank.subject.infra.es.subject.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.frank.common.entity.PageInfo;
import com.frank.subject.infra.es.subject.entity.SubjectInfoEs;

import java.util.List;

/**
 * @author Frank Zou
 * @version v0.0.1
 * @date 2024/4/20
 * @description
 */
public interface SubjectInfoEsService {

    /**
     * 插入商品信息到ES中
     *
     * @param subjectInfoEs 商品信息
     */
    void insertSubject(SubjectInfoEs subjectInfoEs);

    /**
     * 批量插入商品信息到ES中
     *
     * @param subjectInfoEsList 商品信息列表
     */
    void insertBatchSubject(List<SubjectInfoEs> subjectInfoEsList);

    /**
     * 修改 ES 中的商品信息
     *
     * @param subjectInfoEs subjectInfoEs
     */
    void updateSubject(SubjectInfoEs subjectInfoEs);

    /**
     * 批量修改 ES 中的商品信息
     * @param subjectInfoEsList subjectInfoEs list
     */
    void updateBatchSubject(List<SubjectInfoEs> subjectInfoEsList);


    /**
     * 删除商品信息
     *
     * @param subjectId 商品ID
     */
    void deleteSubject(String subjectId);

    /**
     * 查询商品列表
     *
     * @param subjectInfoEs Subject search condition
     * @param pageInfo  page info
     * @return Subject list
     */
    Page<SubjectInfoEs> page(SubjectInfoEs subjectInfoEs, PageInfo pageInfo);


    /**
     * 根据商品ID查询商品信息
     * @param subjectId 商品ID
     * @return 商品信息
     */
    SubjectInfoEs get(String subjectId);
}
